import userApi from 'api/modules/user';
import { useUserStore, useUserInfoStore } from '@/store'

const userStore = useUserStore()
const userInfoStore = useUserInfoStore()

/**
 * 用户服务 - 处理用户相关的业务逻辑和API调用
 */
class UserService {

  /**
   * 获取用户信息 / 未加载则刷新store信息
   * @param {Number} userId 用户ID
   * @returns {Promise<Object>} 用户信息
   */
  async getUserInfo(userId) {
    try {
      const userInfo = await userApi.getUserInfo(userId);
      if (userStore.state.token && !userInfoStore.state.isLoaded) {
          userInfoStore.setUserInfo(userInfo)
          return userInfo;
      }
    } catch (error) {
      throw error;
    }
  }

  /**
   * 更新用户信息 / 刷新store信息
   * @param {Object} userData 用户数据
   * @returns {Promise<Object>} 更新结果
   */
  async updateUserInfoAndReturn(userData) {
    try {
      const updatedUserInfo = await userApi.updateUserInfoAndReturn(userData);
      userInfoStore.setUserInfo(updatedUserInfo)
      return updatedUserInfo;
    } catch (error) {
      throw error;
    }
  }

  /**
   * 上传图片
   * @param {Number} userId 用户ID
   * @param {File} file 图片文件
   * @param {String} fileType 图片类型
   * @returns {Promise<Object>} 上传结果
   */
  async uploadFile(userId, file, fileType) {
    try {
      return await userApi.uploadFile(userId, file, fileType);
    } catch (error) {
      throw error;
    }
  }

  /**
   * 修改密码
   * @param {Object} passwordData 密码数据
   * @returns {Promise<Object>} 修改结果
   */
  async changePassword(passwordData) {
    try {
      return await userApi.changePassword(passwordData);
    } catch (error) {
      throw error;
    }
  }
}

// 导出单例
export default new UserService();